home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / nethack.lha / nethack-3.1 / include / config.h < prev    next >
C/C++ Source or Header  |  1993-01-23  |  13KB  |  422 lines

  1. /*    SCCS Id: @(#)config.h    3.1    92/08/29    */
  2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  3. /* NetHack may be freely redistributed.  See license for details. */
  4.  
  5. #ifndef CONFIG_H /* make sure the compiler does not see the typedefs twice */
  6. #define CONFIG_H
  7.  
  8.  
  9. /*
  10.  * Section 1:    OS selection.
  11.  *        Select the version of the OS you are using.
  12.  *        For "UNIX" select either SYSV or BSD in unixconf.h.
  13.  *        A "VMS" option is not needed since the VMS C-compilers
  14.  *        provide it (no need to change sec#1, vmsconf.h handles it).
  15.  */
  16.  
  17. #define UNIX        /* delete if no fork(), exec() available */
  18.  
  19. /*
  20.  * MS DOS - compilers
  21.  *
  22.  * Microsoft C auto-defines MSDOS,
  23.  * Borland C   auto-defines __TURBOC__,
  24.  * DJGPP       auto-defines MSDOS.
  25.  */
  26.  
  27. /* #define MSDOS    /* use if not defined by compiler or cases below */
  28.  
  29. #ifdef __TURBOC__
  30. # define MSDOS
  31. #endif
  32.  
  33. #ifdef MSDOS
  34. # undef UNIX
  35. #endif
  36.  
  37. /*
  38.  * Mac Stuff.
  39.  */
  40.  
  41. #ifdef applec        /*    MPW auto-defined symbol            */
  42. # define MAC
  43. # undef UNIX        /*    Just in case                */
  44. #endif
  45. /* #define MAC        /*    We're on some mac-ish platform    */
  46.  
  47. #ifdef MAC
  48. # ifdef THINK_C
  49. #  define NEED_VARARGS
  50. # endif
  51. #endif
  52.  
  53. /*
  54.  * Amiga setup.
  55.  */
  56. #ifdef AZTEC_C     /* Manx auto-defines this */
  57. # ifdef MCH_AMIGA    /* Manx auto-defines this for AMIGA */
  58. #  ifndef AMIGA
  59. #define AMIGA        /* define for Commodore-Amiga */
  60. #  endif        /* (Lattice auto-defines AMIGA) */
  61. #define AZTEC_50    /* define for version 5.0 of manx */
  62. # endif
  63. #endif
  64. #ifdef LATTICE
  65. # define NEARDATA __near /* put some data close */
  66. # define NO_SCAN_BRACK    /* scanf doesn't handle [] (this define available
  67.              * for any system with this problem) */
  68. #else
  69. # define NEARDATA
  70. #endif
  71. #ifdef AMIGA
  72. # ifdef UNIX
  73.     "Please re-read the compilation documentation.  Thank you."
  74. # endif
  75. #endif
  76.  
  77. /*
  78.  * Atari auto-detection
  79.  */
  80.  
  81. #ifdef atarist
  82. # undef UNIX
  83. # define TOS
  84. #else
  85. # ifdef __MINT__
  86. #  undef UNIX
  87. #  define TOS
  88. # endif
  89. #endif
  90.  
  91. /*
  92.  * and other systems...
  93.  */
  94.  
  95. /* #define OS2        /* define for OS/2 */
  96.  
  97. /* #define TOS        /* define for Atari ST/TT */
  98.  
  99. /* #define STUPID    /* avoid some complicated expressions if
  100.                your C compiler chokes on them */
  101. /* #define TERMINFO    /* uses terminfo rather than termcap */
  102.             /* should be defined for HPUX and most, but not all,
  103.                SYSV */
  104.             /* in particular, it should NOT be defined for the
  105.              * UNIXPC unless you remove the use of the shared
  106.              * library in the makefile */
  107. /* #define MINIMAL_TERM    /* if a terminal handles highlighting or tabs poorly,
  108.                try this define, used in pager.c and termcap.c */
  109. /* #define ULTRIX_CC20    /* define only if using cc v2.0 on a DECstation */
  110. /* #define ULTRIX_PROTO    /* define for Ultrix 4.0 (or higher) on a DECstation;
  111.              * if you get compiler errors, don't define this. */
  112.             /* Hint: if you're not developing code, don't define
  113.                ULTRIX_PROTO. */
  114.  
  115. #ifdef AMIGA
  116. # define NEED_VARARGS
  117. #endif
  118.  
  119. #ifdef VMS    /* really old compilers need special handling, detected here */
  120. # undef UNIX
  121. # ifdef __DECC        /* buggy early versions want widened prototypes    */
  122. #  define NOTSTDC    /* except when typedefs are involved        */
  123. #  define USE_VARARGS
  124. #  undef __HIDE_FORBIDDEN_NAMES    /* need non-ANSI library support functions */
  125. # else
  126. #  ifdef VAXC    /* must use CC/DEFINE=ANCIENT_VAXC for vaxc v2.2 or older */
  127. #   ifdef ANCIENT_VAXC    /* vaxc v2.2 and earlier [lots of warnings to come] */
  128. #    define KR1ED    /* simulate defined() */
  129. #    define USE_VARARGS
  130. #   else        /* vaxc v2.3,2.4,or 3.x, or decc in vaxc mode */
  131. #     if defined(USE_PROTOTYPES) /* this breaks 2.2 (*forces* use of ANCIENT)*/
  132. #      define __STDC__ 0 /* vaxc is not yet ANSI compliant, but close enough */
  133. #      define signed     /* well, almost close enough */
  134. #include <stddef.h>
  135. #      define UNWIDENED_PROTOTYPES
  136. #     endif
  137. #     define USE_STDARG
  138. #   endif
  139. #  endif /*VAXC*/
  140. # endif /*__DECC*/
  141. # ifdef VERYOLD_VMS    /* v4.5 or earlier; no longer available for testing */
  142. #  define USE_OLDARGS    /* <varargs.h> is there, vprintf & vsprintf aren't */
  143. #  ifdef USE_VARARGS
  144. #   undef USE_VARARGS
  145. #  endif
  146. #  ifdef USE_STDARG
  147. #   undef USE_STDARG
  148. #  endif
  149. # endif
  150. #endif /*VMS*/
  151.  
  152. #ifdef vax
  153. /* just in case someone thinks a DECstation is a vax. It's not, it's a mips */
  154. # ifdef ULTRIX_PROTO
  155. #  undef ULTRIX_PROTO
  156. # endif
  157. # ifdef ULTRIX_CC20
  158. #  undef ULTRIX_CC20
  159. # endif
  160. #endif
  161.  
  162. #ifdef KR1ED        /* For compilers which cannot handle defined() */
  163. #define defined(x) (-x-1 != -1)
  164. /* Because:
  165.  * #define FOO => FOO={} => defined( ) => (-1 != - - 1) => 1
  166.  * #define FOO 1 or on command-line -DFOO
  167.  *      => defined(1) => (-1 != - 1 - 1) => 1
  168.  * if FOO isn't defined, FOO=0. But some compilers default to 0 instead of 1
  169.  * for -DFOO, oh well.
  170.  *      => defined(0) => (-1 != - 0 - 1) => 0
  171.  *
  172.  * But:
  173.  * defined("") => (-1 != - "" - 1)
  174.  *   [which is an unavoidable catastrophe.]
  175.  */
  176. #endif
  177.  
  178. /* Windowing systems...
  179.  * Define all of those you want supported in your binary.
  180.  * Some combinations make no sense.  See the installation document.
  181.  */
  182. #define TTY_GRAPHICS    /* good old tty based graphics */
  183. /* #define X11_GRAPHICS    /* X11 interface */
  184.  
  185. /*
  186.  * Define the default window system.  This should be one that is compiled
  187.  * into your system (see defines above).  Known window systems are:
  188.  *
  189.  *    tty, X11, mac, amii
  190.  */
  191.  
  192. /* MAC also means MAC windows */
  193. #ifdef MAC
  194. # ifndef    AUX
  195. #  undef TTY_GRAPHICS
  196. #  undef X11_GRAPHICS
  197. #  define DEFAULT_WINDOW_SYS "mac"
  198. # endif
  199. #endif
  200.  
  201. /* no options yet: Amiga also means Intuition windows */
  202. #ifdef AMIGA
  203. # undef TTY_GRAPHICS
  204. # define DEFAULT_WINDOW_SYS "amii"
  205. #endif
  206.  
  207. #ifndef DEFAULT_WINDOW_SYS
  208. # define DEFAULT_WINDOW_SYS "tty"
  209. #endif
  210.  
  211.  
  212.  
  213. /*
  214.  * Section 2:    Some global parameters and filenames.
  215.  *        Commenting out WIZARD, LOGFILE, or NEWS removes that feature
  216.  *        from the game; otherwise set the appropriate wizard name.
  217.  *        LOGFILE and NEWS refer to files in the playground.
  218.  */
  219.  
  220. #ifndef WIZARD        /* allow for compile-time or Makefile changes */
  221. # ifndef KR1ED
  222. #  define WIZARD  "wizard" /* the person allowed to use the -D option */
  223. # else
  224. #  define WIZARD
  225. #  define WIZARD_NAME "wizard"
  226. # endif
  227. #endif
  228.  
  229. #define LOGFILE "logfile"    /* larger file for debugging purposes */
  230. #define NEWS "news"        /* the file containing the latest hack news */
  231.  
  232. /*
  233.  *    If COMPRESS is defined, it should contain the full path name of your
  234.  *    'compress' program.  Defining INTERNAL_COMP causes NetHack to do
  235.  *    simpler byte-stream compression internally.  Both COMPRESS and
  236.  *    INTERNAL_COMP create smaller bones/level/save files, but require
  237.  *    additional code and time.  Currently, only UNIX fully implements
  238.  *    COMPRESS; other ports should be able to uncompress save files a
  239.  *    la unixmain.c if so inclined.
  240.  */
  241.  
  242. #ifdef UNIX
  243. # define COMPRESS "/usr/ucb/compress"  /* path name for 'compress' */
  244. #endif
  245. #ifndef COMPRESS
  246. # define INTERNAL_COMP    /* control use of NetHack's compression routines */
  247. #endif
  248.  
  249. /*
  250.  *    Defining INSURANCE slows down level changes, but allows games that
  251.  *    died due to program or system crashes to be resumed from the point
  252.  *    of the last level change, after running a utility program.
  253.  */
  254. #define INSURANCE    /* allow crashed game recovery */
  255.  
  256. #ifndef MAC
  257. # define CHDIR        /* delete if no chdir() available */
  258. #endif
  259.  
  260. #ifdef CHDIR
  261. /*
  262.  * If you define HACKDIR, then this will be the default playground;
  263.  * otherwise it will be the current directory.
  264.  */
  265. #define HACKDIR "/usr/games/lib/nethackdir"     /* nethack directory */
  266.  
  267. /*
  268.  * Some system administrators are stupid enough to make Hack suid root
  269.  * or suid daemon, where daemon has other powers besides that of reading or
  270.  * writing Hack files.  In such cases one should be careful with chdir's
  271.  * since the user might create files in a directory of his choice.
  272.  * Of course SECURE is meaningful only if HACKDIR is defined.
  273.  */
  274. /* #define SECURE    /* do setuid(getuid()) after chdir() */
  275.  
  276. /*
  277.  * If it is desirable to limit the number of people that can play Hack
  278.  * simultaneously, define HACKDIR, SECURE and MAX_NR_OF_PLAYERS.
  279.  * #define MAX_NR_OF_PLAYERS 6
  280.  */
  281. #endif /* CHDIR */
  282.  
  283.  
  284.  
  285. /*
  286.  * Section 3:    Definitions that may vary with system type.
  287.  *        For example, both schar and uchar should be short ints on
  288.  *        the AT&T 3B2/3B5/etc. family.
  289.  */
  290.  
  291. /*
  292.  * Uncomment the following line if your compiler doesn't understand the
  293.  * 'void' type (and thus would give all sorts of compile errors without
  294.  * this definition).
  295.  */
  296. /* #define NOVOID            /* define if no "void" data type. */
  297.  
  298. /*
  299.  * Uncomment the following line if your compiler falsely claims to be
  300.  * a standard C compiler (i.e., defines __STDC__ without cause).
  301.  * Examples are Apollo's cc (in some versions) and possibly SCO UNIX's rcc.
  302.  */
  303. /* #define NOTSTDC            /* define for lying compilers */
  304.  
  305. #include "tradstdc.h"
  306.  
  307. /*
  308.  * type schar: small signed integers (8 bits suffice) (eg. TOS)
  309.  *
  310.  *    typedef char    schar;
  311.  *
  312.  *      will do when you have signed characters; otherwise use
  313.  *
  314.  *    typedef short int schar;
  315.  */
  316. #ifdef AZTEC
  317. # define schar    char
  318. #else
  319. typedef signed char    schar;
  320. #endif
  321.  
  322. /*
  323.  * type uchar: small unsigned integers (8 bits suffice - but 7 bits do not)
  324.  *
  325.  *    typedef unsigned char    uchar;
  326.  *
  327.  *    will be satisfactory if you have an "unsigned char" type;
  328.  *    otherwise use
  329.  *
  330.  *    typedef unsigned short int uchar;
  331.  */
  332. typedef unsigned char    uchar;
  333.  
  334. /*
  335.  * Various structures have the option of using bitfields to save space.
  336.  * If your C compiler handles bitfields well (e.g., it can initialize structs
  337.  * containing bitfields), you can define BITFIELDS.  Otherwise, the game will
  338.  * allocate a separate character for each bitfield.  (The bitfields used never
  339.  * have more than 7 bits, and most are only 1 bit.)
  340.  */
  341. #define BITFIELDS    /* Good bitfield handling */
  342.  
  343. /* #define STRNCMPI /* compiler/library has the strncmpi function */
  344.  
  345. /*
  346.  * There are various choices for the NetHack vision system.  There is a
  347.  * choice of two algorithms with the same behavior.  Defining VISION_TABLES
  348.  * creates huge (60K) tables at compile time, drastically increasing data
  349.  * size, but runs slightly faster than the alternate algorithm.  (MSDOS in
  350.  * particular cannot tolerate the increase in data size; other systems can
  351.  * flip a coin weighted to local conditions.)
  352.  *
  353.  * If VISION_TABLES is defined, two-dimensional tables will be generated.
  354.  * Some compilers need braces around the rows of such arrays; some need
  355.  * them not to be there.  Known preferences:
  356.  *    Braces:        Sun, DEC vaxen (Ultrix), DEC Mips
  357.  *            Bull DPX/2 K&R (Green Hills)
  358.  *    No Braces:    gcc, hc (IBM High C compiler), AT&T 3B, MSC 5.1
  359.  *            Bull DPX/2 Ansi (Green Hills/-Xa option), MPW C
  360.  * If VISION_TABLES is not defined, things will be faster if you can use
  361.  * MACRO_CPATH.  Some cpps, however, cannot deal with the size of the
  362.  * functions that have been macroized.
  363.  */
  364.  
  365. /*#define VISION_TABLES    /* use vision tables generated at compile time */
  366. #ifdef VISION_TABLES
  367. # define BRACES        /* put braces around rows of 2d arrays */
  368. #else
  369. # define MACRO_CPATH    /* use clear_path macros instead of functions */
  370. #endif
  371.  
  372.  
  373.  
  374. /*
  375.  * Section 4:  THE FUN STUFF!!!
  376.  *
  377.  * Conditional compilation of special options are controlled here.
  378.  * If you define the following flags, you will add not only to the
  379.  * complexity of the game but also to the size of the load module.
  380.  *
  381.  * Note:  Commenting MULDGN will yield a game similar to 3.0, without
  382.  * Quest dungeons and tasks, and without some other special dungeons. 
  383.  */
  384.  
  385. /* game features */
  386. #define POLYSELF    /* Polymorph self code by Ken Arromdee */
  387. #define SOUNDS        /* Add more life to the dungeon */
  388. /* dungeon features */
  389. #define SINKS        /* Kitchen sinks - Janet Walz */
  390. /* dungeon levels */
  391. #define WALLIFIED_MAZE    /* Fancy mazes - Jean-Christophe Collet */
  392. #define REINCARNATION    /* Special Rogue-like levels */
  393. /* monsters & objects */
  394. #define KOPS        /* Keystone Kops by Scott R. Turner */
  395. #define ARMY        /* Soldiers, barracks by Steve Creps */
  396. #define SEDUCE        /* Succubi/incubi seduction, by KAA, suggested by IM */
  397. #define WALKIES        /* Leash code by M. Stephenson */
  398. #define TOURIST        /* Tourist players with cameras and Hawaiian shirts */
  399. #define TUTTI_FRUTTI    /* fruit option as in Rogue, but which works, by KAA */
  400. #define MUSE        /* Let monsters use more things - KAA */
  401. #define MULDGN        /* Multi-branch dungeons MRS & IM */
  402. /* difficulty */
  403. #define ELBERETH    /* Engraving the E-word repels monsters */
  404. #define EXPLORE_MODE    /* Allow non-scoring play with additional powers */
  405. /* I/O */
  406. #define REDO        /* support for redoing last command - DGK */
  407. #define COM_COMPL    /* Command line completion by John S. Bien */
  408. #ifndef AMIGA
  409. # define CLIPPING    /* allow smaller screens -- ERS */
  410. #endif
  411.  
  412. #ifdef REDO
  413. # define DOAGAIN '\001'    /* ^A, the "redo" key used in cmd.c and getline.c */
  414. #endif
  415.  
  416. #define EXP_ON_BOTL    /* Show experience on bottom line */
  417. /* #define SCORE_ON_BOTL    /* added by Gary Erickson (erickson@ucivax) */
  418.  
  419. #include "global.h"    /* Define everything else according to choices above */
  420.  
  421. #endif /* CONFIG_H */
  422.